package 泛型;

import java.util.ArrayList;
/*
* 类型通配符
* 为了表示各种泛型List的父类，可以使用类型通配符
* 类型通配符号的分类
* 类型通配符<?>
* List<?>表示元素类型未知的List,它的元素可以匹配任何的类型
* 这种带通配符号的List仅表示它是各种泛型List的父类，并不能把元素添加到其中
* 类型通配符号上限：<? extends 类型>
* List<? extends Number>它表示的类型是Number或则其子类型
* 类型通配符号下限：<? super 类型>
* List<? super Number>它表示的类型是Number或则其父类型
* */
public class 类型通配符 {
    public static void main(String[] args) {
        /*类型通配符 <?> */
        ArrayList<?> list1 = new ArrayList<Object>();
        ArrayList<?> list2 = new ArrayList<Number>();
        ArrayList<?> list3 = new ArrayList<Integer>();
        System.out.println("----------");
        /*类型通配符上限 <? extends 类型> */
        ArrayList<? extends Number> list5 = new ArrayList<Number>();
        ArrayList<? extends Number> list6 = new ArrayList<Integer>();
        System.out.println("------------------");
        /*类型通配符下限:<? super 类型>*/
        ArrayList<? super Number> list7 = new ArrayList<Object>();
        ArrayList<? super Number> list8 = new ArrayList<Number>();
    }
}